/*
 * CourseTeachersManager.h
 *
 *  Created on: 10 May 2010
 *      Author: Savramis Sartios
 */

#ifndef COURSETEACHERSMANAGER_H_
#define COURSETEACHERSMANAGER_H_
#include "ICourseTeachersManager.h"

class CourseTeachersManager : public ICourseTeacherManager {
public:
	CourseTeachersManager();
	virtual ~CourseTeachersManager();

	/**
	 * Επιστρέφει έναν iterator που βλέπει στα στοιχεία των παραμέτρων
	 * \param teachers είναι μια δομή map που περιέχει ως κλειδί τον κωδικό του μαθήματος κι ως τιμή έναν vector με τους καθηγητές που διδάσκουν το μάθημα
	 * \return ICourseTeachersIterator ο iterator
	 * \throw NullPointer εάν η παράμετρος είναι null
	 * \throw NullPointer εάν υπάρχει πρόβλημα με τη δημιουργία λίστας
	 */
	virtual ICourseTeachersIterator * getIterator(const map<string,vector<string> > *teachers);
private:
	/**
	 * Επιστρέφει μια λίστα όπου περιέχει τους καθηγητές του κάθε μαθήματος
	 * \param teachers είναι μια δομή map που περιέχει ως κλειδί τον κωδικό του μαθήματος κι ως τιμή έναν vector με τους καθηγητές που διδάσκουν το μάθημα
	 * \return ICourseTeachersList  η λίστα
	 * \throw NullPointer εάν κάποιο από τα στοιχείο της δομής έχει τουλάχιστον ένα πεδίο null
	 *
	 */
	virtual ICourseTeachersList * getList(const map<string,vector<string> > *teachers);
};

#endif /* COURSETEACHERSMANAGER_H_ */
